Digital signal processors (DSP) are widely employed to process data streams (frames/packets) and/or tasks. Other types of processor, such as reduced instruction set computer (RISC), are often employed along with DSPs in various applications.
Combined RISC-DSP architectures are used in many communication systems, where the RISC processor typically takes care of the scheduling, setup, and/or teardown of the communication channels (sessions), and the DSP(s) typically performs the data processing. In emerging architectures, many communication sessions (e.g., hundreds) are supposed to be handled by the same RISC processor. A “session” may be a particular communication link (e.g., a call), and include multiple parts (e.g., frames). One or more job requests may be necessary to process each part (e.g., frame) of the communication session. In various implementations, a communication session may carry Voice (e.g., voice-over-packet), data, video, music, etc.
Typically, communication sessions are established between a client device and a host device, with the host device possibly servicing multiple communication sessions. A RISC-DSP architecture may be employed by the host device to process one or more communication sessions.
Generally, a new session start request, corresponding to a new communication session, causes a session identifier to be allocated for said communication session. The session identifier is then associated with a particular periodic processing timeslot, such that all subsequent session information is processed during the same periodic timeslot in subsequent processing cycles. That is, the periodic processing timeslot where the session is started, and consequently subsequent frames are received, is decided based on the session start request. Typically, a host device merely associates a communication session with the current timeslot at the time the communication session start request is received. No load balancing of timeslot distribution occurs in the conventional method.
A problem arises where the response time of the processor (e.g., RISC) for the scheduling tasks/jobs becomes unpredictable. For example, session start requests for many or all active communication sessions may appear nearly simultaneously or relatively close in time. Consequently, the amount of time required for the processor to hand over the session(s) processing to other dedicated processors (e.g., DSPs) can vary significantly between, say, the second communication session and the ninetieth communication session. To make matters worse, the delay for each communication session may vary from processing timeslot to processing timeslot, depending on how many live sessions exist prior to it in a particular timeslot. This variable delay in session scheduling translates into increased jitter in the data path, hence degrading the performance of the communication session. This tends to degrade the quality of sessions where real-time or pseudo, substantially, or near real-time communications are desired, such as voice-over-IP communications.